;:sys36864
	;.opt o
	*= $9943
sto	=2
get	=$e124
puffer	=820
start	lda #<neubef
	ldy #>neubef
	sta $308
	sty $309
	jsr $ffe7
	lda #0
	sta $3e
	sta $10
	sta $37
	sta $33
	lda #>start
	sta $38
	sta $34
	lda 45
	ldy 46
	sta 47
	sty 48
	sta 49
	sty 50
	jsr $a81d
	ldx #$19
	stx $16
	lda #<hi
	ldy #>hi
	jmp $ab1e
hi	.byt 13
	.byte "list 2000 installed"
	.byt 13,13
	.byte "by nikolaus heusler"
	.byt 13
	.byte "   zwengauerweg  18"
	.byt 13
	.byte "   8000 muenchen 71"
	.byt 13,13
	.byte "enter '!' for setup"
	.byt 13,0
l1	.byte "list of "
	brk
l2	.byte " .... $"
	brk
bacs	.byt 169,109,160,192,141,4,3
hext	.byte "0123456789abcdef"
ma	.byt 1,1,1, 4, 5,1,1,0,1, 0, 39,0
mb	.byt 2,2,2,10,10,2,2,2,2,10,100,2
am	=12 	; anz menuepunkte
col1	="\x98"
col2	="\x9b"
col3	="\x05"
df	=4 	; data-flag
rf	=5 	; rem-flag
nf	=6 	; next-flag
pos0	=181 	; ende der zeilennummer
xmk	=182 	; speicher
bupo	=247 	; pufferzeiger
fone	=248 	; for..next-zaehler
ifth	=249 	; if..then-zaehler
quo	=250 	; quote-modus
buz	=251 	; zeiger auf vor. pufferinhalt
met	.byt 13
	.byte "\x93list 2000 setup"
	.byt 13
	.byte "\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0"
	.byt 13
	.byte "a - insert spaces"
	.byt 13
	.byte "b - skip spaces"
	.byt 13
	.byte "c - format linenumbers"
	.byt 13
	.byte "d - indent for..next"
	.byt 13
	.byte "e - indent if..then"
	.byt 13
	.byte "f - rip colons"
	.byt 13
	.byte "g - rip if..then"
	.byt 13
	.byte "h - rip next"
	.byt 13
	.byte "i - phantom headline"
	brk
met2	.byt 13
	.byte "j - left margin"
	.byt 13
	.byte "k - right margin"
	.byt 13
	.byte "l - color list"
	.byt 13
	.byte "\x11[return] when done, [stop] to disable"
	.byt 13,0
jn	.byte "ny"
neubef	jsr $73
	cmp #$9b
	beq list
	cmp #"!"
	beq menu
	jsr 121
	jmp $a7e7
menu	jsr 115
	jsr setup
	jmp $a7ae
list	jsr setsto
	jsr 115
	cmp #34
	bne nophan
	jmp phantom
nophan	jsr 121
	bcc la4
	beq la4
	cmp #$ab
	beq la4
syn	jmp $af08
la4	jsr $a96b
	jsr $a613
	jsr 121
	beq lbb
	cmp #$ab
	bne syn
	jsr 115
	jsr $a96b
	bne syn
lbb	lda $14
	ora $15
	bne abb
	lda #-1
	sta $14
	sta $15
abb	jsr ggf1
splist	jsr init
	ldy #1
	lda ($5f),y
	bne nend
aus	jmp $a7ae
nend	jsr $a82c
	iny
	lda ($5f),y
	tax
	iny
	lda ($5f),y
	cmp $15
	bne le6
	cpx $14
	beq ok
le6	bcs aus
ok	jsr number
	lda #4
	clc
	adc $5f
	sta $5f
	bcc sploop
	inc $60
sploop	ldy #0
	lda ($5f),y
	bne data
	jsr crlf
	inc $5f
	bne splist
	inc $60
	bne splist
data	jsr out
	inc $5f
	bne sploop
	inc $60
	bne sploop
phantom	lda #123
	jsr $e1cc
	jsr $e1d4
	lda $ba
	cmp #1
	beq notest
	cmp #8
	bcs test
	ldx #9
	.byt $2c
miss	ldx #8
	.byt $2c
notfound	ldx #4
	jmp $a437
test	lda $b7
	beq miss
notest	lda #0
	sta $b9
	lda #123
	sta $b8
	jsr $e1c1
	ldx #123
	jsr $e11e
	lda 144
	bne notfound
	jsr $e124
	ldx 144
	bne notfound
	lda ma+8
	bne titel
	jsr get
	jmp phaloop
titel	pha
	lda #<l1
	ldy #>l1
	jsr strout
	lda #34
	jsr print
	jsr namout
	lda #34
	jsr print
	lda #<l2
	ldy #>l2
	jsr strout
	jsr get
	jsr hex
	pla
	jsr hex
	jsr crlf
	jsr crlf
	jsr ggf1
phaloop	jsr $a82c
	jsr get
	jsr get
	tax
	bne liston
	jsr $ffcc
	lda #123
	jsr $e1cc
	jmp $a7ae
liston	jsr init
	jsr get
	tax
	jsr get
	jsr number
listph	jsr get
	tax
	beq endph
	jsr out
	jmp listph
endph	jsr crlf
	jmp phaloop
setsto	lda #0
	sta fone
	sta bupo
	ldx #6
	ldy #$a0
comp	lda 49152,x
	cmp bacs,x
	bne aeae
	dex
	bpl comp
	lda #-1
	ldy #$c2
	.byt $2c
aeae	lda #$9e
	sta sto
	sty sto+1
	lda ma+11
	beq init
	lda #0
	sta $d020
	sta $d021
	jsr ggf3
	lda #1
	sta 198
	lda #col3
	sta 631
init	lda #0
	sta $f
	sta rf
	sta df
	sta nf
	sta ifth
	sta quo
	rts
number	sta $62
	stx $63
	ldx ma+9
	beq noma
mar	jsr space
	dex
	bne mar
noma	ldx #144
	sec
	jsr $bc49
	jsr $bddf
	ldx #-1
such0	inx
	lda $100,x
	bne such0
	stx pos0
	lda ma+2
	beq nraus
spa	cpx #5
	bcs nraus
	jsr space
	inx
	bne spa
nraus	jsr $bf0c
	jsr strout
	jsr space
instfo	lda fone
	clc
	adc ifth
	tax
	beq ret
insert	jsr space
	dex
	bne insert
ret	rts
then	jsr aber
	ldx ma+6
	beq qconti
	jsr sprung
	lda ma+4
	clc
	adc ifth
	sta ifth
qconti	jmp conti
komma	bit $f
	bmi qpi
	bit rf
	bmi qpi
	bit nf
	bpl qpi
	lda ma+7
	beq ose
	jsr sprung
ose	jsr outsert
	lda #44
qpi	jmp pi
next	jsr aber
	lda #-1
	sta nf
	jsr outsert
	jmp conti
outsert	lda ma+3
	beq rat
	lda fone
	beq rat
	sec
	sbc ma+3
	sta fone
	lda #5
	ldx ma+2
	bne sti0
	lda pos0
sti0	clc
	adc ma+9
	tax
	clc
	adc ma+3
	tay
zieh	lda puffer,y
	sta puffer,x
	inx
	iny
	cpy bupo
	bcc zieh
	stx bupo
rat	rts
pin	bit $f
	bmi qpi
	bit rf
	bmi qpi
	ldy #0
	sty df
	sty nf
	jsr print
	lda ma+5
	bne sprung
	rts
sprung	jsr crlf
	lda #5
	ldx ma+2
	bne stimmt0
	lda pos0
stimmt0	clc
	adc ma+9
	tax
stim0	jsr space
	dex
	bpl stim0
	jmp instfo
for	jsr aber
	lda ma+3
	clc
	adc fone
	sta fone
	jmp conti
uspace	jmp qspace
qkomma	jmp komma
qthen	jmp then
qnext	jmp next
out	cmp #32
	beq uspace
	cmp #58
	beq pin
	cmp #44
	beq qkomma
	cmp #128
	bcc pi
	cmp #-1
	beq pi
	bit $f
	bmi pi
	pha
	cmp #$a7
	beq qthen
	cmp #$81
	beq for
	cmp #$82
	beq qnext
conti	ldy #-1
	cmp #$8f
	bne norem
	sty rf
norem	cmp #$83
	bne nodata
	sty df
nodata	pla
	sec
	sbc #$7f
	tax
	ldy #-1
	jsr ggf2
l2c	dex
	beq l37
l2f	iny
	lda (sto),y
	bpl l2f
	bmi l2c
l37	iny
	lda (sto),y
	bmi klr
	jsr print
	jmp l37
klr	and #$7f
	jsr print
	jsr ggf1
	lda ma
	beq nochr
leer	lda #32
pi	jsr print
	cmp #34
	bne nochr
	lda $f
	eor #-1
	sta $f
nochr	lda rf
	and #1
	beq ausd
	dec rf
	jsr ggf3
ausd	rts
qspace	lda ma+1
	beq leer
	bit $f
	bmi leer
	bit df
	bmi leer
	bit rf
	bmi leer
	rts
aber	bit rf
	bmi halt
	bit rf
	bmi halt
	rts
halt	pla
	pla
	jmp conti
hex	pha
	lsr
	lsr
	lsr
	lsr
	jsr hex2
	pla
hex2	and #15
	tax
	lda hext,x
	.byt $2c
space	lda #32
print	stx xmk
	ldx bupo
	sta puffer,x
	ldx xmk
	inc bupo
	rts
ggf1	lda #col1
	.byt $2c
ggf2	lda #col2
	.byt $2c
ggf3	lda #col3
	pha
	lda ma+11
	beq bleibt
	pla
	bne print
bleibt	pla
	rts
strout	sta 34
	sty 35
	ldy #0
stou	lda (34),y
	beq stend
	jsr print
	iny
	bne stou
stend	rts
namout	ldy #0
nout	cpy $b7
	bcs stend
	lda ($bb),y
	jsr print
	iny
	bne nout
crlf	lda bupo
	sta buz
	jsr ggf1
	lda #13
	jsr print
	ldx #-1
	ldy #0
txtout	inx
	cpx buz
	bne erlaubt
	lda ma+11
	beq erlaubt
	lda #0
	sta 212
erlaubt	lda puffer,x
	jsr $ffd2
	cmp #13
	beq txtend
	cmp #34
	bne nodv
	lda #-1
	eor quo
	sta quo
nodv	iny
	cpy ma+10
	bcc txtout
	jsr $aad7
	lda #5
	ldy ma+2
	bne stimmt1
	lda pos0
stimmt1	clc
	adc ma+9
	adc fone
	adc ifth
	pha
	clc
	adc quo
	tay
stim1	jsr $ab3f
	dey
	bpl stim1
	lda quo
	beq fast
	lda #34
	jsr $ffd2
fast	pla
	tay
	iny
	bpl txtout
txtend	lda 653
	lsr
	bcs txtend
	ldx #0
	stx bupo
	rts
setup	lda #<met
	ldy #>met
	jsr $ab1e
	lda #<met2
	ldy #>met2
	jsr $ab1e
parout	jsr $e566
	jsr $aad7
	ldy #0
parlp	jsr $aad7
	lda #24
	sta 211
	lda ma,y
	ldx mb,y
	cpx #11
	bcc eins
	tax
	tya
	pha
	lda #0
	jsr $bdcd
	pla
	tay
	lda #32
	bne malz
eins	cpx #3
	bcs num
	tax
	lda jn,x
	.byt $2c
num	ora #48
malz	jsr $ffd2
	iny
	cpy #am
	bcc parlp
getkey	jsr 65508
	cmp #13
	beq ausstieg
	cmp #"a"
	bcc down
	cmp #"a"+am
	bcs down
	sbc #64
	tax
	inc ma,x
	lda ma,x
	cmp mb,x
	bcc paraw
	lda #0
	sta ma,x
paraw	lda ma+5
	bne para2
	sta ma+3
para2	lda ma+10
	cmp ma+9
	bcs parout
	lda ma+9
	sta ma+10
	jmp parout
down	cmp #"\x03"
	beq cancel
	cmp #"A"
	bcc getkey
	cmp #"A"+am
	bcs getkey
	sbc #192
	tax
	dec ma,x
	bpl paraw
	lda mb,x
	sec
	sbc #1
	sta ma,x
	bpl paraw
cancel	jsr 58451
ausstieg	jsr $aad7
	jsr $aad7
	jmp $aad7
